package thread4;

// 期望这个类能够有唯一一个实例.
class Singleton {

    private static int a;
    private static Singleton instance = new Singleton();

    // 通过这个方法来获取到刚才的实例.
    // 后续如果想使用这个类的实例, 都通过 getInstance 方法来获取.
    public static Singleton getInstance() {
        return instance;
    }

    // 把构造方法设置为 私有 . 此时类外面的其他代码, 就无法 new 出这个类的对象了.
    private Singleton() { }

    public static void main(String[] args) {
        Singleton.instance.a = 10;
        Singleton.instance.instance.instance = new Singleton();//这个静态成员自己访问自己

    }
}

public class Demo21 {
    public static void main(String[] args) {
        // 此处又有一个实例了. 这就不是单例了呀.
        // Singleton s1 = new Singleton();
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2);
    }
}
